const fs = require('fs');
const path = require("path");
// 1. 加载模块
const express = require("express");
// 2. 创建服务对象
const app = express(); // application应用
// 3. 指定端口，开启服务器
app.listen(3006, () => console.log("express服务器启动了"));

// 自定义中间件
// app.use(中间件函数)
app.use((req, res, next) => {
    // - err 可以省略
    // - req 请求相关的对象
    // - res 响应相关的对象
    // - next 函数，可以省略
    req.abc = 'hello';
    // 调用next函数，表示当前的中间件处理完毕了，打开开关（中间件），把请求交给下一个中间件处理
    next();
});



// 4. 携巨款（变得非常简单、人性化）
// 获取书籍的接口  /api/getbooks
app.get("/api/getbooks", (req, res) => {
    // console.log(111);
    // 读取books.json
    fs.readFile(path.join(__dirname, 'books.json'), 'utf-8', (err, data) => {
        if (err) return console.log(err);

        // 读取成功，得到一个 data（json格式的字符串）
        res.send({
            status: 200,
            msg: '获取图书成功',
            data: JSON.parse(data),
        });
    });
});

// 添加书籍的接口  /api/addbook
// 使用express提供的方法，接收 查询字符串显示的 请求体
// app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
    if (req.method === 'POST') {
        let str = '';
        req.on('data', (chunk) => str += chunk);
        req.on('end', () => {
            let querystring = require("querystring");
            req.body = querystring.parse(str);
            next();
        });
    } else {
        next();
    }
});
app.post("/api/addbook", (req, res) => {
    // console.log(222);
    // 前面只要做了配置(urlencoded)，这里可以直接使用 req.body 获取请求体
    console.log(req.body);

    res.send('你的请求体收到了');
});

// 删除书籍的接口  /api/delbook
app.get("/api/delbook", (req, res) => {
    // console.log(333);
    // 使用express，express提供了一个属性 req.query，专门用于获取请求参数
    console.log(req.query); // { id: '1', username: '斗破苍穹', author: '天蚕土豆', publisher: '出版社' }
    // let id = req.query.id;
    // 删除代码
    res.send('收到参数');

});

app.get('/my/article/deletecate/3/20/zs', (req, res) => {
    console.log(req.params);

    res.send('全部收到');
})